In any computer network, on the network layer (L2) communication level, there can be two types of clients: flat clients which are connected directly to the network (e.g. via a switch) and routed clients which are connected to the network via a router.
Whenever a flat client such as 10A wishes to connect to a specific destination on the network (for example cluster 100), it has to issue a broadcast request. Such a request can be, for example in a form of Address Resolution Protocol (ARP) for Internet protocol version 4 (IPv4) or Neighbor Discovery Protocol NDP for Internet protocol version 6 (IPv6). An address resolution request includes a tuple of the form: (client IP, target IP) where the client IP is the IP address of, for example, client 10A and the target IP is the virtual IP address of cluster.
routed clients on the contrary are passing the data to their gateway (router) and expect the router to pass the data to the right destination. The router will issue the ARP request (as flat clients do) in order get the media access control (MAC) address of the controller to which the router should pass the data.
Many implementations utilize a domain names system (DNS) that holds several virtual IP (VIP) addresses associated with the cluster domain name. Whenever any client (flat or routed) wishes to access the cluster, the client first applies to the DNS with the domain name of the cluster and receive in return one of a plurality (e.g., M) of VIP addresses associated with cluster 100 which includes N controllers (e.g. 4). It is recommended, but not necessary to have M=N. The VIP addresses may be returned to the client in a form of round robin (e.g. each access to the DNS with the same domain name will return a consecutive VIP in an ordered list of M VIP addresses).
It should be noted that in a case of a cluster, either flat client or routed client are not aware that they are working with a cluster and therefore cluster actually presents itself as single black box rather than a plurality of nodes.
The address resolution request is then broadcasted from the client to the entire network (i.e., to all clients that are located on the same VLAN and same logical subnet).
In currently available networks that involve a cluster, one solution known in the art is to have each controller within the cluster has associated with two different IP addresses. One for flat network and one for routed network. Upon receiving a broadcast request, the operating system (i.e. kernel) is responsible to answer it based on the IP address (either flat or routed) and other factors.
The problem with the aforementioned solution is that the kernel has to maintain two sets of IP addresses for each controller.